<template>
  <mu-paper :class="className" :id="id" :style="{height,width}" />
</template>

<script>
import echarts from 'echarts'
import { debounce } from '@/utils'

export default {
  props: {
    data:{
      require:true
    },
    className: {
      type: String,
      default: 'chart'
    },
    id: {
      type: String,
      default: 'chart'
    },
    width: {
      type: String,
      default: '100%'
    },
    height: {
      type: String,
      default: '440px'
    },
    autoResize: {
      type: Boolean,
      default: true
    }
  },
  data () {
    return {
      chart: null
    }
  },
  mounted () {
    this.initChart({data:this.data})

    if (this.autoResize) {
      this.__resizeHanlder = debounce(() => {
        if (this.chart) {
          this.chart.resize()
        }
      }, 100)
      window.addEventListener('resize', this.__resizeHanlder)
      // 监听侧边栏的变化
      const sidebarElm = document.getElementsByClassName('content-left')[0]
      sidebarElm.addEventListener('transitionend', this.__resizeHanlder)
    }


  },
  beforeDestroy () {
    if (!this.chart) {
      return
    }
    if (this.autoResize) {
      window.removeEventListener('resize', this.__resizeHanlder)
      const sidebarElm = document.getElementsByClassName('content-left')[0]
      sidebarElm.removeEventListener('transitionend', this.__resizeHanlder)
    }


    this.chart.dispose()
    this.chart = null
  },
  methods: {
    initChart ({ mainColor = '#57617B', bgColor = '#fff', title = 'title', data} = {}) {

      this.chart = echarts.init(document.getElementById(this.id))

      this.chart.setOption({
        backgroundColor: bgColor,
        title: {
          top: 20,
          text: title,
          textStyle: {
            fontWeight: 'normal',
            fontSize: 16,
            color: mainColor
          },
          left: '1%'
        },
        tooltip: {
           trigger: 'axis',
          axisPointer: {
            type: 'cross'
          },
          padding: [5, 10]
        },
        // tab
        legend: {
          top: 20,
          icon: 'rect',
          itemWidth: 14,
          itemHeight: 5,
          itemGap: 13,
          right: '4%',
          textStyle: {
            fontSize: 12,
            color: mainColor
          }
        },

        // 图表
        grid: {
          top: 100,
          left: '3%',
          right: '4%',
          bottom: '4%',
          containLabel: true  
        },
        // x轴
        xAxis: [{
          type: 'category', //分类
          boundaryGap: false,
          axisLine: {
            lineStyle: {
              color: '#57617B'
            },
          },
          data: data.xData
        }],
        yAxis: [{
          type: 'value',
          name: '(%)',
          axisTick: {
            show: false
          },
          axisLine: {
            lineStyle: {
              color: mainColor
            }
          },
          axisLabel: {
            margin: 10,
            textStyle: {
              fontSize: 14
            }
          }
        }],
        series: [{
          name: data.data1.name,
          type: 'line',
          smooth: true,
          symbol: 'circle',
          symbolSize: 5,
          showSymbol: false,
          lineStyle: {
            normal: {
              width: 1
            }
          },
          areaStyle: {
            normal: {
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                offset: 0,
                color: 'rgba(137, 189, 27, 0.3)'
              }, {
                offset: 0.8,
                color: 'rgba(137, 189, 27, 0)'
              }], false),
              shadowColor: 'rgba(0, 0, 0, 0.1)',
              shadowBlur: 10
            }
          },
          itemStyle: {
            normal: {
              color: 'rgb(137,189,27)',
              borderColor: 'rgba(137,189,2,0.27)',
              borderWidth: 12
            }
          },
          data: data.data1.dataArr 
        }, {
          name: data.data2.name,
          type: 'line',
          smooth: true,
          symbol: 'circle',
          symbolSize: 5,
          showSymbol: false,
          lineStyle: {
            normal: {
              width: 1
            }
          },
          areaStyle: {
            normal: {
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                offset: 0,
                color: 'rgba(0, 136, 212, 0.3)'
              }, {
                offset: 0.8,
                color: 'rgba(0, 136, 212, 0)'
              }], false),
              shadowColor: 'rgba(0, 0, 0, 0.1)',
              shadowBlur: 10
            }
          },
          itemStyle: {
            normal: {
              color: 'rgb(0,136,212)',
              borderColor: 'rgba(0,136,212,0.2)',
              borderWidth: 12
            }
          },
          data: data.data2.dataArr
        }, {
          name: data.data3.name,
          type: 'line',
          smooth: true,
          symbol: 'circle',
          symbolSize: 5,
          showSymbol: false,
          lineStyle: {
            normal: {
              width: 1
            }
          },
          areaStyle: {
            normal: {
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                offset: 0,
                color: 'rgba(219, 50, 51, 0.3)'
              }, {
                offset: 0.8,
                color: 'rgba(219, 50, 51, 0)'
              }], false),
              shadowColor: 'rgba(0, 0, 0, 0.1)',
              shadowBlur: 10
            }
          },
          itemStyle: {
            normal: {
              color: 'rgb(219,50,51)',
              borderColor: 'rgba(219,50,51,0.2)',
              borderWidth: 12
            }
          },
          data: data.data3.dataArr
        }]
      })

      // this.chart.setOption({
      //   backgroundColor: '#394056',
      //   title: {
      //     top: 20,
      //     text: '折线图',
      //     textStyle: {
      //       fontWeight: 'normal',
      //       fontSize: 16,
      //       color: '#F1F1F3'
      //     },
      //     left: '1%'
      //   },
      //   tooltip: {
      //     trigger: 'axis',
      //     axisPointer: {
      //       lineStyle: {
      //         color: '#57617B'
      //       }
      //     }
      //   },
      //   legend: {
      //     top: 20,
      //     icon: 'rect',
      //     itemWidth: 14,
      //     itemHeight: 5,
      //     itemGap: 13,
      //     data: ['CMCC', 'CTCC', 'CUCC'],
      //     right: '4%',
      //     textStyle: {
      //       fontSize: 12,
      //       color: '#F1F1F3'
      //     }
      //   },
      //   grid: {
      //     top: 100,
      //     left: '3%',
      //     right: '4%',
      //     bottom: '2%',
      //     containLabel: true
      //   },
      //   xAxis: [{
      //     type: 'category',
      //     boundaryGap: false,
      //     axisLine: {
      //       lineStyle: {
      //         color: '#57617B'
      //       }
      //     },
      //     data: ['13:00', '13:05', '13:10', '13:15', '13:20', '13:25', '13:30', '13:35', '13:40', '13:45', '13:50', '13:55']
      //   }],
      //   yAxis: [{
      //     type: 'value',
      //     name: '(%)',
      //     axisTick: {
      //       show: false
      //     },
      //     axisLine: {
      //       lineStyle: {
      //         color: '#57617B'
      //       }
      //     },
      //     axisLabel: {
      //       margin: 10,
      //       textStyle: {
      //         fontSize: 14
      //       }
      //     },
      //     splitLine: {
      //       lineStyle: {
      //         color: '#57617B'
      //       }
      //     }
      //   }],
      //   series: [{
      //     name: 'CMCC',
      //     type: 'line',
      //     smooth: true,
      //     symbol: 'circle',
      //     symbolSize: 5,
      //     showSymbol: false,
      //     lineStyle: {
      //       normal: {
      //         width: 1
      //       }
      //     },
      //     areaStyle: {
      //       normal: {
      //         color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
      //           offset: 0,
      //           color: 'rgba(137, 189, 27, 0.3)'
      //         }, {
      //           offset: 0.8,
      //           color: 'rgba(137, 189, 27, 0)'
      //         }], false),
      //         shadowColor: 'rgba(0, 0, 0, 0.1)',
      //         shadowBlur: 10
      //       }
      //     },
      //     itemStyle: {
      //       normal: {
      //         color: 'rgb(137,189,27)',
      //         borderColor: 'rgba(137,189,2,0.27)',
      //         borderWidth: 12

      //       }
      //     },
      //     data: [220, 182, 191, 134, 150, 120, 110, 125, 145, 122, 165, 122]
      //   }, {
      //     name: 'CTCC',
      //     type: 'line',
      //     smooth: true,
      //     symbol: 'circle',
      //     symbolSize: 5,
      //     showSymbol: false,
      //     lineStyle: {
      //       normal: {
      //         width: 1
      //       }
      //     },
      //     areaStyle: {
      //       normal: {
      //         color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
      //           offset: 0,
      //           color: 'rgba(0, 136, 212, 0.3)'
      //         }, {
      //           offset: 0.8,
      //           color: 'rgba(0, 136, 212, 0)'
      //         }], false),
      //         shadowColor: 'rgba(0, 0, 0, 0.1)',
      //         shadowBlur: 10
      //       }
      //     },
      //     itemStyle: {
      //       normal: {
      //         color: 'rgb(0,136,212)',
      //         borderColor: 'rgba(0,136,212,0.2)',
      //         borderWidth: 12

      //       }
      //     },
      //     data: [120, 110, 125, 145, 122, 165, 122, 220, 182, 191, 134, 150]
      //   }, {
      //     name: 'CUCC',
      //     type: 'line',
      //     smooth: true,
      //     symbol: 'circle',
      //     symbolSize: 5,
      //     showSymbol: false,
      //     lineStyle: {
      //       normal: {
      //         width: 1
      //       }
      //     },
      //     areaStyle: {
      //       normal: {
      //         color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
      //           offset: 0,
      //           color: 'rgba(219, 50, 51, 0.3)'
      //         }, {
      //           offset: 0.8,
      //           color: 'rgba(219, 50, 51, 0)'
      //         }], false),
      //         shadowColor: 'rgba(0, 0, 0, 0.1)',
      //         shadowBlur: 10
      //       }
      //     },
      //     itemStyle: {
      //       normal: {
      //         color: 'rgb(219,50,51)',
      //         borderColor: 'rgba(219,50,51,0.2)',
      //         borderWidth: 12
      //       }
      //     },
      //     data: [220, 182, 125, 145, 122, 191, 134, 150, 120, 110, 165, 122]
      //   }]
      // })
    }
  }
}
</script>
